Modern software relies on manual or automatic memory managers to organize random-access-memory (referred to herein as RAM or memory). Manual memory managers offer good performance but are error-prone and require additional programmer effort. Automatic memory managers, called garbage collectors, remove much of the burden from the programmer, leading to increased productivity and stronger correctness guarantees. Typical costs associated with automatic memory management are greater space usage and unpredictable performance due to software stalling for long periods while memory is reorganized by the garbage collector.
Most software is designed for overall speed where slow responsiveness of any particular operation is acceptable. Systems that utilize real-time software, on the other hand, such as avionics, satellite control, ship-board computing, nuclear reactor control, automatic defibrillator devices, and the like, depend on predictable performance of every operation. Recent advancements in real-time garbage collection technology have reduced pause times to 200 microseconds or less by increasing memory usage. Though these systems guarantee the timeliness of the garbage collector, they do so using an unbounded amount of memory. Improvements are needed to collect garbage in memory with memory space and time boundaries.